'use strict';

const fs = require('fs');

// 查找所有路由文件
function findControllerFiles(path) {
    // 如果传入指定目录，则从指定目录查找路由文件，否则默认从controllers目录下查找路由文件
    path = path || './controllers';

    // 使用fs模块读取指定目录下的文件
    let files = fs.readdirSync(path);

    // 返回过滤后的路由文件（查找到的文件过滤掉非.js结尾的、并且不能是index.js的文件）
    return files.filter(item => {
        return item.endsWith('.js') && item !== 'index.js';
    });
}

//注册路由(传入所有的路由文件)
function registryRouter(files,router) {
    // 遍历路由文件
    files.forEach(file => {// 形如这个样子的字符串：'users.js'

        // 加载指定文件模块，返回形式是一个对象
        let tmpModule = require('../controllers/' + file);
        // 遍历对象
        for (let key in tmpModule) {
            // 使用空格分割字符串
            let arr = key.split(' ');

            let method = arr[0];//http的方法，可能是：get post put delete中的其中一种
            let url = arr[1];//请求地址，不包含主机地址：localhost:port
            let fn = tmpModule[key];//请求需要调用的异步函数

            if (method === 'get') {
                router.get(url, fn);
            } else if (method === 'post') {
                router.post(url, fn);
            } else if (method === 'put') {
                router.put(url, fn);
            } else if (method === 'del') {
                router.delete(url, fn);
            }
        }
    })
}

module.exports = {
    findControllerFiles,
    registryRouter
}